package com.yc.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yc.entity.Schedule;
import com.yc.exception.BizException;
import com.yc.vo.AttendanceData;
import com.yc.vo.ScheduleDetail;
import com.yc.vo.ScheduleVo;
import com.yc.vo.StudentAttendanceRecord;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;

import java.io.InputStream;
import java.util.List;

import java.util.List;
import java.util.Map;

/**
 * 课程表;(schedule)表服务接口
 * @date : 2023-6-28
 */
public interface ScheduleService{

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    Schedule queryById(Integer id);

    /**
     * 分页查询
     *
     * @param schedule 筛选条件
     * @param current 当前页码
     * @param size  每页大小
     * @return
     */
    Page<Schedule> paginQuery(Schedule schedule, long current, long size);
    /**
     * 新增数据
     *
     * @param schedule 实例对象
     * @return 实例对象
     */
    Schedule insert(Schedule schedule) throws BizException;
    /**
     * 更新数据
     *
     * @param schedule 实例对象
     * @return 实例对象
     */
    Schedule update(Schedule schedule);
    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

    /**
     * 查询当天老师给指定班级上课的课表
     * @param username 老师工号
     * @param cid   上课的班级
     * @return  指定班级上课的课表
     */
    Schedule selectScheduleByCidAndDate(@Param("username") String username, @Param("cid")String cid);



    /**
     * 查询当天老师给班级上课的信息
     * @param teacherId 老师Id
     * @return 上课信息
     */
    List<StudentAttendanceRecord> selectScheduleByTeacherId(@Param("teacherId") String teacherId);

    /**
     * 查询所有的上课班级
     * @param username 用户表的主键id
     * @return
     */

    List<AttendanceData> selectClassesAll(String username);

    /**
     * 文件上传,批量添加课程
     * @param inputStream
     * @return
     */
    void upload(InputStream inputStream);

    /**
     * 查询当前老师今天所有课程
     * @param username
     * @return
     */
    List<ScheduleVo> findSystemUerTodayAllSchedule(String username);

}
